package GUI;

import parser.FunctionSyntacticException;
import parser.ParserConsulta;
import parser.consulta.ConsultaCompuesta;
import FilesManagers.CantOpenFileException;

public class ThreadSearchArbol extends AbstractThreadManager {

	private String opciones;
	private boolean exactSearch;
	
	ThreadSearchArbol(String opciones, boolean b){
		super();
		this.opciones=opciones;
		exactSearch=b;

	}
	
	
	
	@Override
	public void run() {
		
		SearchIndex(opciones,exactSearch);
		
	}
	
	public void SearchIndex(String palabrasBuscadas,boolean exactSearch){
		if(!arbolExiste()){
			System.out.println("No existe ningún índice, por favor cree uno primero");
		}
		    
			try {
				if(!palabrasBuscadas.trim().equals("")){
					
					try{
						
						ParserConsulta.validarConsulta(palabrasBuscadas,listaOperandos,listaDelimitadores);
						palabrasBuscadas=ParserConsulta.espaciar(palabrasBuscadas, listaDelimitadores);
						indexManager.setExactSearch(exactSearch);
						c = new ConsultaCompuesta("temp/",indexManager,arbolFile);
						c.setStringConsulta(palabrasBuscadas);
						c.ejecutar();
						}catch(FunctionSyntacticException e){
						System.out.println(palabrasBuscadas+" -> "+e.getMessage());
					}
					String res[]=c.getResultado();
					
					System.out.println("ENCONTRADO EN:");							
					if(res!=null){
						for(int i=0; i<res.length;i++){
							System.out.println(res[i]);
							
						}
						System.out.println("************************");
					}else{
						System.out.println("Ningun resultado exitoso");
					}
				}else{
					
					System.out.println("La palabra "+palabrasBuscadas/*[j]*/+" es muy general y fue limpiada por los filtros, intente de nuevo");
				}
			} catch (CantOpenFileException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}

}
